package com.cy.store.mapper;

import com.cy.store.entity.Address;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

// 收获地址持久层接口
public interface AddressMapper {
    /**
     * 插入用户的收货地址数据
     * @param address
     * @return 受影响的行数
     */
    Integer insert(Address address);

    /**
     * 根据用户id统计收货地址数量
     * @param uid
     * @return 用户的收货地址数量
     */
    Integer countByUid(Integer uid);

    /**
     * 根据用户的uid查询用户的收货地址数据
     * @param uid
     * @return 用户的收货地址数据
     */
    List<Address> findByUid(Integer uid);

    /**
     * 根据aid查询收货地址数据
     * @param aid
     * @return 查到的地址数据
     */
    Address findByAid(Integer aid);

    /**
     * 我觉得当一个默认地址被设置为非默认时，虽然不是人为的操作，但是也应该记录下修改的时间和用户
     * 根据用户的uid值来修改用户的收货地址设为默认
     * @param uid
     * @return 更新的行数
     */
    Integer updateNonDefault(Integer uid);

    /**
     * 将地址设为默认
     * @param aid
     * @return 被设为默认的地址的行数
     */
    Integer updateDefaultByAid( Integer aid,
                               String modifiedUser,
                               Date modifiedTime);

    /**
     * 根据守护地址id删除收货地址数据
     * @param aid
     * @return 受影响的行数
     */
    Integer deleteByAid(Integer aid);

    /**
     * 根据用户uid，将用户最新的修改的地址设为默认地址
     * @param uid
     * @return
     */
    Integer updateDefaultLastModified(Integer uid);
}